// 演示关系运算符的使用
package main

import "fmt"

func test() bool{
	fmt.Print("test")
	return true
}
func main(){
	var a1=9
	var a2=8
	fmt.Println(a1 == a2)
	fmt.Println(a1 != a2)
	fmt.Println(a1 > a2)
	fmt.Println(a1 >= a2)
	fmt.Println(a1 < a2)
	fmt.Println(a1 <= a2)

	// flag :=a1>a2
	// if flag{
	// 	fmt.Println("a1>a2")
	// }
	// var a1 =9
	// var a2 =7
	// if a1 == a2 {
	// 	fmt.Println("a1=a2")
	// }else{
	// 	fmt.Println("a1!=a2")
	// }
	// 逻辑运算符
	// var a=23
	// var b=8
	// fmt.Println(a>10 && b <10)
	// fmt.Println(a>23 && b <10)  //false
	// fmt.Println(a>5 && b <6)  //false

	// 逻辑或
	// var a=23
	// var b=8
	// fmt.Println(a>10 || b <10)
	// fmt.Println(a>23 || b <10) 
	// fmt.Println(a>5 || b <6)  
	// fmt.Println(a==5 || b <6)  

	// flag :=true
	// fmt.Println(!flag)

	// 逻辑与和逻辑或短路
	
	// test 执行
	// var a =10
	// if a>9 && test(){
	// 	fmt.Println("执行")

	// }
	// var a =10
	// // 如果第一个条件为false那么不执行
	// if a>11 && test(){
	// 	fmt.Println("执行")
	// }	


	// var a =10
	// // 如果第一个条件为false第二个条件为true执行
	// if a>11 || test(){
	// 	fmt.Println("执行")
	// }	
	// // 第一个条件为ture 不执行test
	// if a<11 || test(){
	// 	fmt.Println("执行")
	// }	

	// 赋值运算符
	// var a =20
	// a = 21
	// fmt.Println(a)
	// var a =23+2
	// fmt.Println(a)


	// var  a= 10 
	// b :=a
	// fmt.Println(b)

	// var a =10
	// a+=2  a=a+2
	// fmt.Println(a)

	// var a =10
	// a =a+3
	// fmt.Println(a)

	// var a =10
	// a -=3
	// fmt.Println(a)

	// 逻辑与前面是false 后面不执行
	// 逻辑或前面是true 后面就不执行

	// var a =34
	// var b =10
	// a,b=b,a
	// print(a,"\t",b)
	// 实现两个变量的交换 不使用中间变量
	// var a=34
	// var b=10
	// a=a+b
	// b=a-b
	// a=a-b
	// fmt.Printf("a=%v,b=%v",a,b)


//
	// var days=100
	// var week =days/7
	// var day =days % 7
	// fmt.Printf("距离放假还有%v周零%v天",week,day)
	// 位运算
	var a = 5
	var b =2
	// fmt.Println("a&b=",a&b) //000 值0
	// fmt.Println("a|b=",a|b) //111 值0
	// fmt.Println("a^b,",a^b)
// <<左移n位就是乘以2的n次方 a<<b就是把a的二进位全部左移b位，高位丢弃，低位补0
// >>右移n位就是除以2的n次方
	fmt.Println("a<<b",a<<b)
	fmt.Println("a>>b",a>>b)



}